/*
 * FileDescriptorTable.h
 *
 *  Created on: Jul 11, 2009
 *      Author: elkobir
 */

#ifndef FILEDESCRIPTORTABLE_H_
#define FILEDESCRIPTORTABLE_H_
#include <iostream>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <vector>
#include <sstream>
#include "Utils.h"
#include "MetadataBlock.h"
#include "INode.h"
#include "BlockNode.h"
#include "Utils.h"
#include "Log.h"
#include "HD.h"
#include "Directory.h"
#include <utility>
#include <math.h>

#define EMPTY_INDEX -9;

class FileDescriptorTable {
private:
	vector<int> _fdTable;

public:
	FileDescriptorTable();
	FileDescriptorTable(FileDescriptorTable& ofd);
	virtual ~FileDescriptorTable();

	int addFileDescriptor(int fd);
	int removeFileDescriptor(int fd);
	int findIndexOfFileDescriptor(int fd);
	int findIndexOfFirstEmptySpace();
	int getFileDescriptorByIndex(int index);
	bool isFull();
};

#endif /* FILEDESCRIPTORTABLE_H_ */
